[C - Socket] UDP CLIENT
Publicado por Enzo de Brito Ferber 10/03/2006
[ Hits: 12.159 ]
Homepage: http://www.maximasonorizacao.com.br
Este script testei na minha
propria máquina em terminas
diferentes, mas creio eu que
funcionará em uma rede local.
Como fazer funcionar:
Compile o script:
cc -o client client.c
Abra um terminal (xterm)
Execute o servidor.
Abra outro terminal (xterm)
Execute o cliente
P.S.: O servidor está em
outro link
#include <stdio.h> #include <stdlib.h> #include <arpa/inet.h> #include <netdb.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #define PORT 3456 int main(int argc, char *argv[]){ int fd1, fd2; int num_b; int len_msg; char msg[100]; struct sockaddr_in client; struct sockaddr_in server; struct hostent *host; if(argc != 2){ printf("Error!!! %s <host>\n", argv[0]); exit(1); } host = gethostbyname(argv[1]); if(host == NULL){ printf("Impossivel resolver endereco do servidor...\n"); exit(1); } fd1 = socket(AF_INET, SOCK_DGRAM, 0); if(fd1 == -1){ perror("socket"); exit(1); } client.sin_family = AF_INET; client.sin_port = htons(PORT); client.sin_addr.s_addr = INADDR_ANY; server.sin_family = host->h_addrtype; server.sin_port = htons(PORT); memcpy((char *) &server.sin_addr.s_addr, host->h_addr_list[0], host->h_length); bzero(&(client.sin_zero), 8); bzero(&(server.sin_zero), 8); fd2 = connect(fd1, (struct sockaddr *)&server, sizeof(struct sockaddr)); if(fd2 == -1){ perror("connect"); exit(1); } memset(msg, 0x0, 100); while(1){ printf("Digite uma mensagem (exit para sair): "); fflush(stdin); scanf("%[^\n]", msg); len_msg = sizeof(msg); sendto(fd1, msg, len_msg, 0, (struct sockaddr *)&server, sizeof(struct sockaddr)); if( (strcmp("exit", msg)) == 0){ printf("\nObrigado por usar este cliente...\n"); break; } getchar(); } close(fd1); close(fd2); }
Robo HTTP usando socket e código multiplataforma
Kernel 6.18 em foco, betas fervilhando e avanços em IA no Linux
O que é o THP na configuração de RAM do Linux e quando desabilitá-lo
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
Como colocar atalho para uma pasta na área de trabalho do Ubuntu 24.04... (0)
Como instalar Counter-Strike 1.6? (2)
intervenção politica pode interver no Fedora Linux [RESOLVIDO] (12)